Problem
【BJWC2017】神秘物质
Description
年,冬。
小诚退休以后,不知为何重新燃起了对物理学的兴趣。他从研究所借了些实验仪器,整天研究各种微观粒子。
这一天,小诚刚从研究所得到了一块奇异的陨石样本,便迫不及待地开始观测。在精密仪器的视野下,构成陨石的每个原子都无比清晰。
小诚发现,这些原子排成若干列,每一列的结构具有高度相似性。于是,他决定对单独一列原子进行测量和测试。
被选中的这列共有个顺序排列的原子。最初,第个原子具有能量。随着时间推移和人为测试,这列原子在观测上会产生两种变化:
- :当前第个原子和第个原子合并,得到能量为的新原子;
- :在当前第个原子和第个原子之间插入一个能量为的新原子。
对于一列原子,小诚关心的是相邻一段中能量最大和能量最小的两个原子的能量差值,称为区间极差。因此,除了观测变化外,小诚还要经常统计这列原子的两类数据:
- :当前第到第个原子之间的任意子区间中区间极差的最大值;
- :当前第到第个原子之间的任意子区间中区间极差的最小值。
其中,子区间指的是长度至少是的子区间。
小诚坚信这项研究可以获得诺贝尔物理学奖。为了让小诚早日了结心愿,你能否帮助他实现上述的观测和测量呢?
Input
第一行,两个整数,分别表示最初的原子数目和事件总数。
第二行,个整数,由空格隔开,依次表示每个原子的能量。
接下来行, 每行为一个字符串和两个整数, 描述一次事件,格式见题目描述。
Output
Sample Input
1 | 4 3 |
Sample Output
1 | 5 2 8 |
HINT
, 。
设为当前时刻原子数目。
对于类事件,;
对于类事件,;
对于和类事件,。
任何时刻,保证。
标签:Splay
Solution
基础题。
对于操作,直接插入即可。
对于操作,先删除第和个数,然后在第个数之后插入。
对于询问,易知其答案为该区间的最大数减最小数,于是在上维护区间最大值和最小值即可。
对于询问,其答案一定存在于相邻两数的差之中,在上维护区间相邻两数差的最小值。具体地,在第个数的位置维护第个数和第个数的差的绝对值,这样询问变为询问区间中差的最小值。注意在和时会导致插入位置相邻的数的差值发生变化,需要同时维护。
Code
1 |
|